#ifndef CDEFAULTSHOTBEHAVIOUR_H
#define CDEFAULTSHOTBEHAVIOUR_H

class CSpriteAnimation;
class CSprite;

struct SDL_Surface;

#include "../include/IDefaultEntityBehaviour.h"

//**************************
//Manage the behaviour of a Shot
//**************************
class CDefaultShotBehaviour : public IDefaultEntityBehaviour
{
     protected:
        CSprite * m_ShotSprite;   //Sprite of the shot
        int m_iPowerShot;         //Destructive power of the shot (how many life the entity which collides with it will lose)

    public:
        //**************************
        //Description : Constructor
        //Parameters : Value for m_iX, m_iY,
        //              m_iSpeedX, m_iSpeedY,
        //              m_iWidth, m_iHeight,
        //              the ratio of the collision box
        //              the type of collision
        //              m_iPowerShot
        //Note : None
        //**************************
        CDefaultShotBehaviour(int _iX = 0, int _iY = 0,
                                int _iSpeedX = 1, int _iSpeedY = 1,
                                int _iWidth = 0, int _iHeight = 0,
                                float _fRatioW = 1.0f, float _fRatioH = 1.0f,
                                TYPE_COLLISION _iTypeCollision = AIR,
                                int _iPowerShot = 1);

        //**************************
        //Description : Copy Constructor
        //Parameters : A CDefaultShotBehaviour
        //Note : None
        //**************************
        CDefaultShotBehaviour(CDefaultShotBehaviour & _DefaultShot);

        //**************************
        //Description : Destructor
        //Parameters : None
        //Note : None
        //**************************
        virtual ~CDefaultShotBehaviour();

        //**************************
        //Description : Return the power shot
        //Parameters : None
        //Return Value : The power shot
        //Note : None
        //**************************
        int GetPowerShot() const;

        //**************************
        //Description : Return the sprite of the shot
        //Parameters : None
        //Return Value : The sprite
        //Note : None
        //**************************
        CSprite* GetSprite() const;

        //**************************
        //Description : Set the sprite of the shot
        //Parameters : The pointer tooward the animation and the screen
        //Return Value : None
        //Note : None
        //**************************
        void SetSprite(CSpriteAnimation * _SpriteAnimationShot, SDL_Surface * _screen);

        //**************************
        //Description : Update the trajectory of the entity
        //Parameters : None
        //Return Value : None
        //Note : None
        //**************************
        virtual void EntityTrajectory();


};
#endif
